Skip to main content

Dual SID audio card

·2 mins

Work has been progressing on several projects for Y Ddraig but I have been neglecting this site, there has been a lot of changes that have happened and I’ll share those in some upcoming posts.

This is a project that I completed a while back: a dual SID (Sound Interface Device) audio card.
This board supports both the classic 6581 and 8580 SID chips, bringing the unmistakable Commodore 64 sound to new hardware. This design is taken from the Kiwi computer.

SID Audio PCB

For those unfamiliar with the SID, it was the iconic sound chip used in the Commodore 64 range of computers.

SID highlights #

  • Three independent programmable oscillators – each capable of producing 65,535 equally spaced frequencies across a 0.06–3906 Hz range (at 1 MHz clock)
  • Four waveform types per oscillator – triangle, sawtooth, pulse, and noise, with the ability to combine multiple waveforms for unique timbres
  • Multi-mode analog filter – low-pass, high-pass, and band-pass options (6 dB/oct for band-pass, 12 dB/oct for others) that can be combined into effects such as notch filtering
  • ADSR envelopes – individual attack, decay, sustain, and release control for each oscillator
  • Ring modulation and oscillator sync for more complex tones
  • Two 8-bit ADC inputs – originally used for game paddles or mouse input
  • External audio input for mixing other sound sources
  • Random-number/modulation generator derived from oscillator and envelope states

Testing and next steps #

The board is now up and running, producing some authentic SID sound effects and music. So far, I’ve been testing it using a version of Boulder Dash running on the V9990 video board, and the results are very promising.

However, there’s still more work ahead on the software side. Most existing SID music players rely on emulating the 6502 CPU, since the Commodore 64 never had a standardised music format as far as I can tell — each track typically used its own custom player routine. Unfortunately, full 6502 emulation isn’t practical on a 10 MHz 68000, especially with other things happening.

I’ve experimented with logging and replaying SID register writes, which produces acceptable results for some tunes but not all.
For better compatibility and timing accuracy, I plan to develop a native SID music player aimed at the 68k platform.

SID Board Schematic